package com.zmn.oms.model.entity.work;

import com.zmn.consts.GlobalConsts;
import com.zmn.oms.common.constant.OrderConsts;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 类描述：工单
 *
 * @author liuying
 * @date 2018-11-26 17:55
 */
@Data
public class OrderWork implements Serializable {

    private static final long serialVersionUID = 2419384311309447303L;

    /**
     * 订单Id
     */
    private Long orderId;


    /**
     * 老系统订单Id
     */
    private String oldId;

    /**
     * 老系统订单code
     */
    private String oldCode;

    /**
     * 工单Id
     */
    private Long workId;

    /**
     * 服务公司 id
     */
    private Integer manageCompanyId;

    /**
     *  服务商公司(信息公司/服务商/承包商) 名称
     */
    private String manageCompanyName;

    /**
     * 服务商类型：10 直营，20 非直营
     */
    private Integer manageCompanyType;

    /**
     * 服务商三级类型：10直营服务商，20承包商，30区域合伙人
     */
    private Integer manageCompanyThirdType;

    /**
     * 子公司id
     */
    private Integer companyId;

    /**
     * 服务公司名称
     */
    private String companyName;

    /**
     * 一级组织id
     */
    private Integer orgOneId;

    /**
     * 二级组织id
     */
    private Integer orgTwoId;

    /**
     * 三级组织id
     */
    private Integer orgThreeId;

    /**
     * 四级组织id
     */
    private Integer orgFourId;

    /**
     * 城市id
     */
    private Integer cityId;

    /**
     * 行政城市id
     */
    private Integer naturalCityId;

    /**
     * 服务分类id
     */
    private Integer servCategId;

    /**
     * 前台产品服务分类名称
     */
    private String showServCategName;

    /**
     * 产品一级分类
     */
    private Integer categOneId;

    /**
     * 前台产品一级分类id
     */
    private Integer showCategOneId;

    /**
     * 产品二级分类
     */
    private Integer categId;

    /**
     * 前台产品二级分类id
     */
    private Integer showCategId;

    /**
     * 业务线
     */
    private Integer bizLine;

    /**
     * 产品分组ID
     */
    private Integer servProductGroupId;

    /**
     * 产品分组名称
     */
    private String servProductGroupName;

    /**
     * 绩效分组ID
     */
    private Integer productGroupId;

    /**
     * 前台绩效产品分组id
     */
    private Integer showProductGroupId;

    /**
     * 前台绩效产品分组名称
     */
    private String showProductGroupName;

    /**
     * 产品id
     */
    private Integer productId;

    /**
     * 前台产品Id
     */
    private Integer showProductId;

    /**
     * 下单平台标志：1.言而有信 2.啄木鸟
     */
    private Integer plat;

    /**
     * 服务平台标志：1.言而有信 2.啄木鸟
     */
    private Integer platWork;

    /**
     * 业务模式：1平台，自营
     * @see GlobalConsts#BIZ_MODE_PLAT
     */
    private Integer bizMode;

    /**
     * 下单业务模式：1平台，自营
     * @see GlobalConsts#BIZ_MODE_PLAT
     */
    private Integer bizModeSource;

    /**
     * 订单业务类型：1保外业务（C），2保内业务（F），3工程业务（B）
     * @see GlobalConsts#BIZ_TYPE_C
     */
    private Integer bizType;

    /**
     * 是否测试单（1：非测试单，2：测试单）
     */
    private Integer test;

    /**
     * 是否重复的工单（1：不重复，2：重复）
     */
    private Integer duplicate;

    /**
     * 重复的原单ID
     */
    private Long duplicateId;

    /**
     * 订单类型：1 新单、2 返修单、3 退款单
     */
    private Integer type;

    /**
     * 抢单类型：0/1指派，2抢单
     */
    private Integer grabType;

    /**
     * 用户id
     */
    private Long userId;

    /**
     * 客户id
     */
    private Long customerId;

    /**
     * 上门用户（前置用户Id）
     */
    private Long visitUserId;

    /**
     * 源头工单id
     */
    private Long originalId;

    /**
     * 返修工单id
     */
    private Long reworkId;

    /**
     * 返修工单工程师id
     */
    private Integer reworkMasterId;

    /**
     * 工单录入方式：1后台人工录入、2微信/H5、 3接口(114,号百,360等)
     */
    private Integer inputType;

    /**
     * 保修卡编号（手填）
     */
    private String manualCode;

    /**
     * 来源渠道id
     */
    private Integer sourceChannelId;

    /**
     * 来源渠道一级id
     */
    private Integer sourceChannelOneId;

    /**
     * 来源渠道二级id
     */
    private Integer sourceChannelTwoId;

    /**
     * 渠道一级id
     */
    private Integer channelOneId;

    /**
     * 渠道二级id
     */
    private Integer channelTwoId;

    /**
     * 渠道id
     */
    private Integer channelId;

    /**
     * 渠道类型id
     */
    private Integer channelTypeId;

    /**
     * 渠道名称
     */
    private String channelName;

    /**
     * 渠道别名
     */
    private String channelAnotherName;

    /**
     * 是否为会员产品单：1不是会员产品单：2是会员产品单
     */
    private Integer member;

    /**
     * 来源类型：1普通 2厂商 3大客户 4会员
     */
    private Integer sourceType;

    /**
     * 标准收费标识 ：1 非， 2 是
     */
    private Integer standardPrice;

    /**
     * 一口价标识 ：1 非， 2 是
     */
    private Integer finalPrice;

    /**
     * 是否禁止弃单 1：否，可以弃单  2：不允许弃单
     */
    private Integer disableDiscard;

    /**
     * 是否固定价格 1：否，可以改价  2：不允许改价
     */
    private Integer fixPrice;

    /**
     * 是否有录音 1:否 2:是
     */
    private Integer recording;

    /**
     * 工程师备注
     */
    private String masterRemark;

    /**
     * 当前备注
     */
    private String currentRemark;

    /**
     * 是否需要拉修（1：不需要，2：需要）
     */
    private Integer delivery;

    /**
     * 是否待件（1：否，2：是）
     */
    private Integer waitPart;

    /**
     * 只收上门费标志（1：否，2：是）
     */
    private Integer onlyVisit;

    /**
     * 是否自动派单 (1.否  2.是)
     */
    private Integer autoDistribute;

    /**
     * 是否多工程师维修（1：否，2：是）
     */
    private Integer multiMaster;

    /**
     * 维修工程师id
     */
    private Integer masterId;

    /**
     * 维修工程师姓名
     */
    private String masterName;

    /**
     * 工程师主管id
     */
    private Integer masterSupervisorId;

    /**
     * 工程师主管名称
     */
    private String masterSupervisorName;

    /**
     * 工程师主管手机号
     */
    private String masterSupervisorPhone;

    /**
     * 当前工单状态：11 已录入、21 已确认、31 已派单、41 已接单、51 已上门、61 已完成、66 服务完成、71 已收单、81 已算账
     */
    private Integer status;

    /**
     * 结果状态：1 进行中、2 成功、3 失败、4 弃单
     */
    private Integer resultStatus;

    /**
     * 产生结果的操作员
     */
    private Long resulterId;

    /**
     * 产生结果的操作员类型     */
    private Integer resulterType;

    /**
     * 产生结果的时间
     */
    private Date resultTime;

    /**
     * 取消人id
     */
    private Long cancelerId;

    /**
     * 取消人类型
     */
    private Integer cancelerType;

    /**
     * 取消时间
     */
    private Date cancelTime;

    /**
     * 预约时间
     */
    private Date dutyTime;

    /**
     * 预约状态
     */
    private Integer dutyStatus;

    /**
     * 预约失败code
     */
    private Integer dutyFailCode;

    /**
     * 下次联系时间
     */
    private Date nextContactTime;

    /**
     * 挂起时间
     */
    private Date suspendTime;

    /**
     * 下单人id
     */
    private Long receiverId;

    /**
     * 下单人类型
     * @see com.zmn.common.constant.GlobalConsts#OPERATE_USER_TYPE_SYSTEM
     */
    private Integer receiverType;

    /**
     * 下单时间
     */
    private Date receiveTime;

    /**
     * 下单入口
     * @see com.zmn.consts.GateTypeConsts#GATE_TYPE_PLAT
     */
    private Integer receiveEntranceType;

    /**
     * 下单入口id
     * @see com.zmn.consts.GateTypeConsts
     */
    private Integer receiveEntranceId;

    /**
     * 下单方式 1:人工录入 2：接口录入
     */
    private Integer receiverManner;

    /**
     * 推荐人id
     */
    private Long recommenderId;

    /**
     * 推荐人类型 3 工程师
     */
    private Integer recommenderType;

    /**
     * 转单人id
     */
    private Long turnerId;

    /**
     * 转单时间
     */
    private Date turnTime;

    /**
     * 分单人id
     */
    private Long assignerId;

    /**
     * 分单时间
     */
    private Date assignTime;

    /**
     * 接单员id
     */
    private Long assignConfirmerId;

    /**
     * 接单时间
     */
    private Date assignConfirmTime;

    /**
     * 确认员ID
     */
    private Long confirmerId;

    /**
     * 确认时间
     */
    private Date confirmTime;

    /**
     * 派单员id
     */
    private Long distributerId;

    /**
     * 派单员类型  1 系统 2员工 3 工程师 4 用户 5 厂商 6 服务商 7 大客户 8渠道
     */
    private Integer distributerType;

    /**
     * 派单时间
     */
    private Date distributeTime;

    /**
     * 派单路径，10平台直派、20服务商派单
     * @see com.zmn.oms.common.constant.OrderDistributeConsts#DISTRIBUTE_WAY_PLAT
     */
    private Integer distributeWay;

    /**
     * 工程师接单时间
     */
    private Date takeTime;

    /**
     * 联系用户时间
     */
    private Date contactTime;

    /**
     * 工程师上门时间
     */
    private Date visitTime;

    /**
     * 服务完成人id
     */
    private Long serviceCompleterId;

    /**
     * 服务完成时间
     */
    private Date serviceCompleteTime;

    /**
     * 服务完成审核人id
     */
    private Long serviceCompleteReviewerId;

    /**
     * 服务完成审核状态 1.待审核 2. 审核成功 3. 审核失败
     */
    private Integer serviceCompleteReviewStatus;

    /**
     * 服务完成审核时间
     */
    private Date serviceCompleteReviewTime;

    /**
     * 是否现场完成 1 不是，2 是
     */
    private Integer completeOnSite;

    /**
     * 完成人id
     */
    private Long completerId;

    /**
     * 维修完成时间
     */
    private Date completeTime;

    /**
     * 收单员id
     */
    private Long checkouterId;

    /**
     * 收单时间
     */
    private Date checkoutTime;

    /**
     * 算账人id
     */
    private Long accounterId;

    /**
     * 算账时间
     */
    private Date accountTime;

    /**
     * 回访员ID
     */
    private Long replyVisiterId;

    /**
     * 回访时间
     */
    private Date replyVisitTime;

    /**
     * 订单金额
     */
    private Integer originalAmount;

    /**
     * 应收总额
     */
    private Integer totalAmount;

    /**
     * 工程师绩效基数
     */
    private Integer billAmount;

    /**
     * 补贴金额
     */
    private Integer subsidyAmount;

    /**
     * 优惠总金额
     */
    private Integer discountAmount;

    /**
     * 配件总金额
     */
    private Integer partAmount;

    /**
     * 内采配件金额
     */
    private Integer inSourcingAmount;

    /**
     * 外报配件金额
     */
    private Integer outSourcingAmount;

    /**
     * 订单杂项费用
     */
    private Integer deliverAmount;

    /**
     * 厂商配件金额
     */
    private Integer factoryPartAmount;

    /**
     * 配件使用标志 1 未用配件，2 使用配件
     */
    private Integer partUse;

    /**
     * 是否需要报销配件 1,不需报销 2,需报销
     */
    private Integer partReimburse;

    /**
     * 配件报销金额
     */
    private Integer partReimburseAmount;

    /**
     * 配件报销状态 1.无需报销、2.待报销、3.报销成功、4.报销失败
     */
    private Integer partReimburseStatus;

    /**
     * 报销时间
     */
    private Date partReimburseTime;

    /**
     * 是否保留配件申请 1 不保留，2 保留
     */
    private Integer partRetain;

    /**
     * 支付状态：1.未支付 2.支付中 3.部分支付 4.已支付 12.退款中 13.部分退款 14.已退款
     */
    private Integer payStatus;

    /**
     * 支付时间
     */
    private Date payTime;

    /**
     * 工程师收款金额
     */
    private Integer masterAmount;

    /**
     * 工程师支付状态：1.未支付 2.支付中 3.部分支付 4.已支付 12.退款中 13.部分退款 14.已退款
     */
    private Integer masterPayStatus;

    /**
     * 工程师支付渠道id
     */
    private Integer masterPayChannelId;

    /**
     * 工程师支付时间
     */
    private Date masterPayTime;

    /**
     * 预付款
     */
    private Integer prepayAmount;

    /**
     * 预付款支付状态：1未支付，2已支付，3退款
     */
    private Integer prepayStatus;

    /**
     * 渠道预付款
     */
    private Integer channelPrepayAmount;

    /**
     * 渠道预付款支付状态：1未支付，2已支付，3退款
     */
    private Integer channelPrepayStatus;

    /**
     * 预付款支付渠道id
     */
    private Integer prepayChannelId;

    /**
     * 预付款支付时间
     */
    private Date prepayTime;

    /**
     * 优惠预付金额
     */
    private Integer discountPrepayAmount;

    /**
     * 优惠预付金额
     */
    private Integer payDiscountAmount;

    /**
     * 定金
     */
    private Integer depositAmount;

    /**
     * 渠道费
     */
    private Integer channelAmount;

    /**
     * 渠道结算 1:未结算  2：已结算
     */
    private Integer channelSettleStatus;

    /**
     * 定金支付状态：1未支付，2已支付，3退款
     */
    private Integer depositStatus;

    /**
     * 定金支付渠道id
     */
    private Integer depositChannelId;

    /**
     * 定金支付时间
     */
    private Date depositTime;

    /**
     * 全款标识
     */
    private Integer fullPaymentFlag;

    /**
     * 退款用户类型
     */
    private Integer refundUserType;

    /**
     * 退款审核状态 1审核中 2通过 3不通过
     */
    private Integer refundReviewStatus;

    /**
     * 退款申请时间
     */
    private Date refundApplyTime;

    /**
     * 退款时间
     */
    private Date refundTime;

    /**
     * 退款金额
     */
    private Integer refundAmount;

    /**
     * 退款单ID
     */
    private Long refundWorkId;

    /**
     * 退款工单ID
     */
    private Long refundTargetWorkId;

    /**
     * 预约结款时间(仅工程单)
     */
    private Date dutyPayTime;

    /**
     * 贴花状态 1无效 2有效
     */
    private Integer appliqueStatus;

    /**
     * 工程师形象照片状态
     */
    private Integer masterImageStatus;

    /**
     * 投诉状态 1:没有投诉  2：有投诉
     */
    private Integer complaintStatus;

    /**
     * 异常状态 1:没有异常  2：有异常
     */
    private Integer abnormalStatus;

    /**
     * 跟单状态 1：无 2：进行中 3：结束
     */
    private Integer trackStatus;

    /**
     * 金额审核状态
     */
    private Integer amountReviewStatus;

    /**
     * 外部工单号
     */
    private String outerId;

    /**
     * 算账Id
     */
    private Long accountId;

    /**
     * 服务项类型，目前仅支持两种类型： 1.工单服务项 2.故障服务项
     * 若值不等于2，则均作为值等于1处理
     * @see OrderConsts#SERVICE_ITEM_TYPE_ORDER
     * @see OrderConsts#SERVICE_ITEM_TYPE_FAULT
     */
    private Integer servItemType;

    /**
     * 1未出发
     * 2已出发
     */

    private Integer isLeave;

    /**
     * 活动id(迟到补偿活动id)
     */
    private Integer discountActivityId;

    /**
     * 创建人
     */
    private String creater;

    /**
     * 最新修改人
     */
    private String updater;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 最新修改时间
     */
    private Date updateTime;

    /**
     * 产品品牌ID，DTO属性
     */
    private Integer productBrandId;
}
